from functools import wraps

from utils.base_util import LogHandler




def excepter(mcm):
    """
    异常处理装饰器，在每个可能存在异常的方法中都可以使用，
    如果出现异常会返回None并将异常信息保存在日志中
    :param mcm: modulename.classname.methodname
    :return: object
    """

    def except_execute(func):
        @wraps(func)  # 保存原有函数或方法的函数名和文档字符串
        def except_handle(*args, **kwargs):
            try:
                res = func(*args, **kwargs)
            except Exception as e:
                print("测试出现异常")
                LogHandler.record(mcm, str(e))
                return None
            else:
                # print("测试通过")
                return res

        return except_handle

    return except_execute



def skip(reason):
    """
    忽略方法的执行
    :param reason: 忽略的理由，调用的时候不写
    :return: None
    """

    def execute(func):
        @wraps(func)
        def skip_handle(reason):
            return reason

        return skip_handle

    return execute